import java.io.InputStreamReader;
import java.io.IOException;
import java.io.FileReader;
import java.io.Reader;

import java.util.TreeMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;

public class Xref {
    private Tokenizer tok;

    public Xref( Reader inStream ) {
        tok = new Tokenizer( inStream );
    }

    public void generateCrossReference( ) {
        Map theIdentifiers = new TreeMap( );
        String current;

        while( ( current = tok.getNextID( ) ) != "" ) {
            List lines = (List) theIdentifiers.get( current );
            if( lines == null ) {
                lines = new ArrayList( );
                theIdentifiers.put( current, lines );
            }
            lines.add( new Integer( tok.getLineNumber( ) ) );
        }
        
        Iterator itr = theIdentifiers.keySet( ).iterator( );
        
        while( itr.hasNext( ) ) {
            Object key = itr.next( );
            Iterator lineItr = ((List) theIdentifiers.get(key) ).iterator( );

            System.out.print( key + ": " );
            System.out.print( lineItr.next( ) );
            
            while( lineItr.hasNext( ) )
                System.out.print( ", " + lineItr.next( ) );
            System.out.println( );    
        }    
    }

    public static void main( String [ ] args ) {

        Xref p;

        if( args.length == 0 ) {
            p = new Xref( new InputStreamReader( System.in ) );
            p.generateCrossReference( );

            return;
        }

        for( int i = 0; i < args.length; i++ ) {
            FileReader f = null;
            try {
                f = new FileReader( args[ i ] );

                System.out.println( args[ i ] + ": " );
                p = new Xref( f );
                p.generateCrossReference( );
                f.close( );
            }
            catch( IOException e ) {
                System.err.println( e + args[ i ] );
            }
            finally {
                try {
                    if( f != null )
                        f.close( );
                }
                catch( IOException e ) {
                }
            }            
        }
    }
}
